#ifndef _GUARD_PLAYER_
#define _GUARD_PLAYER_
#include "Advisor.h"
#include "Deck.h"
#include <math.h>
#include <set>
#include <string>
#include <vector>
using namespace std;
class Player
{
  public:
    Player();
    //Gets
    vector<Player*> getVassals();
    Deck* getHand();
    Deck* getArmy();
    bool getWarFlag();
    int getMaxHandSize();
    string getAddress();
    Player* getOwner();
    bool getIsVassal();
    int getFeedNumber();
    vector<Player*> getFeedVassal();
    Card* getMoveCard();
    int getHunger();
   
    //Sets
    void setAdvisor(Advisor* advisor);
    void setOwner(Player* czar);
    void setWarFlag(bool);
    void setAddress(string address);
    void setMoveCard(Card* card);
    void setMoveFeed(int numCards);
    void setHunger(int newHunger);
    //Functional
    void feedVassal(Player* vassal, int numberOfCards);
    void feedAllVassals();
    void addVassal(Player* newVassal);
    void refillHand();
    


    //Descriptive
    //int playerNumber;//mightnot be necessary

    //trash can:
    //int getHandCount(); we can just use "getHand()->size()"
    //int getMoveFeed();
 
  private:
    Advisor* ai;
    vector<Player*> vassals;
    Player* owner;
    vector<Player*> moveFeedVassals;
    Deck hand;
    Deck army;
    Card* moveCard;
    string address;
    int moveFeedNumber;
    int maxHandSize;
    bool dead;
    bool warFlag;
    int hunger; /* Indicator of how much to feed you. */
};

#endif
